<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Flow-IPC: ipc::session::shm::arena_lend::jemalloc::Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Flow-IPC<span id="projectnumber">&#160;2.0.0</span>
   </div>
   <div id="projectbrief">Flow-IPC project: Full implementation reference.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceipc.html">ipc</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session.html">session</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session_1_1shm.html">shm</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend.html">arena_lend</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html">jemalloc</a></li><li class="navelem"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">Session_server</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-types">Private Types</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#related">Related Functions</a> &#124;
<a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">ipc::session::shm::arena_lend::jemalloc::Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">

<p>This is to vanilla <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a> what <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> is to vanilla <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc" title="A vanilla Server_session with no optional capabilities.">Server_session</a>: it is the session-server type that starts SHM-enabled sessions with SHM-jemalloc provider (ipc::shm::arena_lend::jemalloc).  
 <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ipc::session::shm::arena_lend::jemalloc::Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server__inherit__graph.svg" width="652" height="119"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for ipc::session::shm::arena_lend::jemalloc::Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server__coll__graph.svg" width="1543" height="772"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:ad4d812cdb1a017fb603c16b3a386d433"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433">Server_session_obj</a> = <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">shm::arena_lend::jemalloc::Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;</td></tr>
<tr class="memdesc:ad4d812cdb1a017fb603c16b3a386d433"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for the concrete <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">Server_session</a></code>-like type emitted by <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">async_accept()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433">More...</a><br /></td></tr>
<tr class="separator:ad4d812cdb1a017fb603c16b3a386d433"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa846158c320f2870c77043b6270bb503"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa846158c320f2870c77043b6270bb503">Mdt_reader_ptr</a> = typename Impl::Mdt_reader_ptr</td></tr>
<tr class="memdesc:aa846158c320f2870c77043b6270bb503"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for <a class="el" href="classipc_1_1session_1_1Session__mv.html#a2b1215fb0c9738b9fcfbb337d23c43df" title="Implements Session API per contract.">Session_mv::Mdt_reader_ptr</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa846158c320f2870c77043b6270bb503">More...</a><br /></td></tr>
<tr class="separator:aa846158c320f2870c77043b6270bb503"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0a96fec25d9deea4000ddf72046f379"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ae0a96fec25d9deea4000ddf72046f379">Mdt_builder</a> = typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#af10f452e602e4ea7389c6a77dd9a0f88">Server_session_obj::Mdt_builder</a></td></tr>
<tr class="memdesc:ae0a96fec25d9deea4000ddf72046f379"><td class="mdescLeft">&#160;</td><td class="mdescRight">Metadata builder type passed to <code>mdt_load_func()</code> in advanced <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">async_accept()</a> overload.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ae0a96fec25d9deea4000ddf72046f379">More...</a><br /></td></tr>
<tr class="separator:ae0a96fec25d9deea4000ddf72046f379"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95e9d47a5bd9c32b3d3970ed3af0db01"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a95e9d47a5bd9c32b3d3970ed3af0db01">Channels</a> = typename Impl::Channels</td></tr>
<tr class="memdesc:a95e9d47a5bd9c32b3d3970ed3af0db01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for <a class="el" href="classipc_1_1session_1_1Session__mv.html#af87da439644b2afd73d6a13d97e7985f" title="Container (vector&lt;&gt;) of Channel_obj.">Session_mv::Channels</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a95e9d47a5bd9c32b3d3970ed3af0db01">More...</a><br /></td></tr>
<tr class="separator:a95e9d47a5bd9c32b3d3970ed3af0db01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e47c282616158733240d3b7bd808036"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036">Arena</a> = typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a">Server_session_obj::Base::Arena</a></td></tr>
<tr class="memdesc:a1e47c282616158733240d3b7bd808036"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">shm::arena_lend::jemalloc::Session_mv::Arena</a>. See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a> in particular.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036">More...</a><br /></td></tr>
<tr class="separator:a1e47c282616158733240d3b7bd808036"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d22e6f00d6b8b92fe99198837bce3b9"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4d22e6f00d6b8b92fe99198837bce3b9">Structured_msg_builder_config</a> = typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a7de5ec3e9331c46664a493e060edb6f6">Server_session_obj::Base::Structured_msg_builder_config</a></td></tr>
<tr class="memdesc:a4d22e6f00d6b8b92fe99198837bce3b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b" title="Implements Session API per contract.">shm::arena_lend::jemalloc::Session_mv::Structured_msg_builder_config</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4d22e6f00d6b8b92fe99198837bce3b9">More...</a><br /></td></tr>
<tr class="separator:a4d22e6f00d6b8b92fe99198837bce3b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b167219307d2016e46490b82138c553"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a0b167219307d2016e46490b82138c553">Structured_msg_reader_config</a> = typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#a335c3585402cc9430f8c909e8c7e55f4">Server_session_obj::Base::Structured_msg_reader_config</a></td></tr>
<tr class="memdesc:a0b167219307d2016e46490b82138c553"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0" title="Implements Session API per contract.">shm::arena_lend::jemalloc::Session_mv::Structured_msg_reader_config</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a0b167219307d2016e46490b82138c553">More...</a><br /></td></tr>
<tr class="separator:a0b167219307d2016e46490b82138c553"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5cfd3651a06380b877738c6b5fc353a9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a5cfd3651a06380b877738c6b5fc353a9">Session_server</a> (flow::log::Logger *logger_ptr, const <a class="el" href="structipc_1_1session_1_1Server__app.html">Server_app</a> &amp;srv_app_ref, const <a class="el" href="structipc_1_1session_1_1Client__app.html#add718cbf6aa1d2abb26fbadcc974a7bd">Client_app::Master_set</a> &amp;cli_app_master_set_ref, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a5cfd3651a06380b877738c6b5fc353a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor: identical to <a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">session::Session_server</a> ctor.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a5cfd3651a06380b877738c6b5fc353a9">More...</a><br /></td></tr>
<tr class="separator:a5cfd3651a06380b877738c6b5fc353a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b451906ee2b46d230df5f252bbb64ed"><td class="memTemplParams" colspan="2">template&lt;typename Task_err &gt; </td></tr>
<tr class="memitem:a4b451906ee2b46d230df5f252bbb64ed"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed">async_accept</a> (<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433">Server_session_obj</a> *target_session, Task_err &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:a4b451906ee2b46d230df5f252bbb64ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contract identical to simpler <a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">session::Session_server::async_accept()</a> overload; but internally ensures that the appropriate SHM-jemalloc arenas are available for use in the emitted <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433" title="Short-hand for the concrete Server_session-like type emitted by async_accept().">Server_session_obj</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed">More...</a><br /></td></tr>
<tr class="separator:a4b451906ee2b46d230df5f252bbb64ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76037239acb4b0082023dbe7e7dafb0b"><td class="memTemplParams" colspan="2">template&lt;typename Task_err , typename N_init_channels_by_srv_req_func , typename Mdt_load_func &gt; </td></tr>
<tr class="memitem:a76037239acb4b0082023dbe7e7dafb0b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a76037239acb4b0082023dbe7e7dafb0b">async_accept</a> (<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433">Server_session_obj</a> *target_session, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a95e9d47a5bd9c32b3d3970ed3af0db01">Channels</a> *init_channels_by_srv_req, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa846158c320f2870c77043b6270bb503">Mdt_reader_ptr</a> *mdt_from_cli_or_null, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a95e9d47a5bd9c32b3d3970ed3af0db01">Channels</a> *init_channels_by_cli_req, N_init_channels_by_srv_req_func &amp;&amp;n_init_channels_by_srv_req_func, Mdt_load_func &amp;&amp;mdt_load_func, Task_err &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:a76037239acb4b0082023dbe7e7dafb0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contract identical to advanced <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">Session_server::async_accept()</a> overload; but internally ensures that the appropriate SHM-jemalloc arenas are available for use in the emitted <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433" title="Short-hand for the concrete Server_session-like type emitted by async_accept().">Server_session_obj</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a76037239acb4b0082023dbe7e7dafb0b">More...</a><br /></td></tr>
<tr class="separator:a76037239acb4b0082023dbe7e7dafb0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d11292ef977d04acb9260036100c605"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036">Arena</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605">app_shm</a> (const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;app)</td></tr>
<tr class="memdesc:a8d11292ef977d04acb9260036100c605"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns pointer to the per-<code>app</code> SHM-arena, whose lifetime extends until <code>*this</code> is destroyed; or null if the given <a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> has not yet opened at least 1 <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> via <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">async_accept()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605">More...</a><br /></td></tr>
<tr class="separator:a8d11292ef977d04acb9260036100c605"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa56818050f1bd25b26fc51690a6afbf8"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036">Arena</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa56818050f1bd25b26fc51690a6afbf8">app_shm_ptr</a> (const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;app)</td></tr>
<tr class="memdesc:aa56818050f1bd25b26fc51690a6afbf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a> but returns that via a <code>shared_ptr</code>-handle as required for work directly within ipc::shm::arena_lend::jemalloc APIs.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa56818050f1bd25b26fc51690a6afbf8">More...</a><br /></td></tr>
<tr class="separator:aa56818050f1bd25b26fc51690a6afbf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa548c3379d4b8a8f0b9d618b0c1da7ba"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4d22e6f00d6b8b92fe99198837bce3b9">Structured_msg_builder_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa548c3379d4b8a8f0b9d618b0c1da7ba">app_shm_builder_config</a> (const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;app)</td></tr>
<tr class="memdesc:aa548c3379d4b8a8f0b9d618b0c1da7ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns builder config suitable for capnp-serializing out-messages in SHM arena <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a> for the same <code><a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> app</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa548c3379d4b8a8f0b9d618b0c1da7ba">More...</a><br /></td></tr>
<tr class="separator:aa548c3379d4b8a8f0b9d618b0c1da7ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1039d8bd2d4461085f3eeb5d24e40799"><td class="memItemLeft" align="right" valign="top">Structured_msg_builder_config::Builder::Session&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1039d8bd2d4461085f3eeb5d24e40799">app_shm_lender_session</a> (const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;app)</td></tr>
<tr class="memdesc:a1039d8bd2d4461085f3eeb5d24e40799"><td class="mdescLeft">&#160;</td><td class="mdescRight">In short, what <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa548c3379d4b8a8f0b9d618b0c1da7ba" title="Returns builder config suitable for capnp-serializing out-messages in SHM arena app_shm() for the sam...">app_shm_builder_config()</a> is to shm::arena_lend::jemalloc::Session_mv::app_shm_builder_config(), this is to shm::arena_lend::jemalloc::app_shm_lender_session().  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1039d8bd2d4461085f3eeb5d24e40799">More...</a><br /></td></tr>
<tr class="separator:a1039d8bd2d4461085f3eeb5d24e40799"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96cce95ab7dccc577815b907c94b8f7e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a0b167219307d2016e46490b82138c553">Structured_msg_reader_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a96cce95ab7dccc577815b907c94b8f7e">app_shm_reader_config</a> (const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;app)</td></tr>
<tr class="memdesc:a96cce95ab7dccc577815b907c94b8f7e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns reader config counterpart to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa548c3379d4b8a8f0b9d618b0c1da7ba" title="Returns builder config suitable for capnp-serializing out-messages in SHM arena app_shm() for the sam...">app_shm_builder_config()</a> for a given <code><a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> app</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a96cce95ab7dccc577815b907c94b8f7e">More...</a><br /></td></tr>
<tr class="separator:a96cce95ab7dccc577815b907c94b8f7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2c6ecf04a16b5aba00bdede17aa52e1"><td class="memItemLeft" align="right" valign="top">ipc::shm::arena_lend::Owner_shm_pool_listener_for_repository *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ac2c6ecf04a16b5aba00bdede17aa52e1">shm_arena_pool_listener</a> ()</td></tr>
<tr class="memdesc:ac2c6ecf04a16b5aba00bdede17aa52e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the arena-pool listener maintained throughout <code>*this</code> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a>'s life.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ac2c6ecf04a16b5aba00bdede17aa52e1">More...</a><br /></td></tr>
<tr class="separator:ac2c6ecf04a16b5aba00bdede17aa52e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a522c28128981264487a7e35dd9ea3ef8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a522c28128981264487a7e35dd9ea3ef8">to_ostream</a> (std::ostream *os) const</td></tr>
<tr class="memdesc:a522c28128981264487a7e35dd9ea3ef8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation to the given <code>ostream</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a522c28128981264487a7e35dd9ea3ef8">More...</a><br /></td></tr>
<tr class="separator:a522c28128981264487a7e35dd9ea3ef8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-types" name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:af2d0f0b214054c9df58b9c44be38de14"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#af2d0f0b214054c9df58b9c44be38de14">Impl</a> = <a class="el" href="classipc_1_1session_1_1Session__server__impl.html">Session_server_impl</a>&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</td></tr>
<tr class="memdesc:af2d0f0b214054c9df58b9c44be38de14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for our base/core impl.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#af2d0f0b214054c9df58b9c44be38de14">More...</a><br /></td></tr>
<tr class="separator:af2d0f0b214054c9df58b9c44be38de14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e1d79535dbedc076f11077735e866db"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a6e1d79535dbedc076f11077735e866db">Mutex</a> = flow::util::Mutex_non_recursive</td></tr>
<tr class="memdesc:a6e1d79535dbedc076f11077735e866db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#acff88daea55dc583980576e06659324b" title="Protects m_app_shm_by_name.">m_app_shm_mutex</a> type.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a6e1d79535dbedc076f11077735e866db">More...</a><br /></td></tr>
<tr class="separator:a6e1d79535dbedc076f11077735e866db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a435bf78fa2f7ef5da954cb0cc0da69cb"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a435bf78fa2f7ef5da954cb0cc0da69cb">Lock_guard</a> = flow::util::Lock_guard&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a6e1d79535dbedc076f11077735e866db">Mutex</a> &gt;</td></tr>
<tr class="memdesc:a435bf78fa2f7ef5da954cb0cc0da69cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a6e1d79535dbedc076f11077735e866db" title="Short-hand for m_app_shm_mutex type.">Mutex</a> lock.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a435bf78fa2f7ef5da954cb0cc0da69cb">More...</a><br /></td></tr>
<tr class="separator:a435bf78fa2f7ef5da954cb0cc0da69cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classipc_1_1session_1_1Session__server__impl"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classipc_1_1session_1_1Session__server__impl')"><img src="closed.png" alt="-"/>&#160;Private Types inherited from <a class="el" href="classipc_1_1session_1_1Session__server__impl.html">ipc::session::Session_server_impl&lt; Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;, Server_session&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:a47625f247dea35cf276d31c039c6bf0c inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a47625f247dea35cf276d31c039c6bf0c">Session_server_obj</a> = <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;</td></tr>
<tr class="memdesc:a47625f247dea35cf276d31c039c6bf0c inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">See <a class="el" href="classipc_1_1session_1_1Session__server__impl.html#ad7cd4d77db826af9fe39c17e8ee7ca37" title="Returns pointer to the object that is privately sub-classing us.">this_session_srv()</a>.  <a href="classipc_1_1session_1_1Session__server__impl.html#a47625f247dea35cf276d31c039c6bf0c">More...</a><br /></td></tr>
<tr class="separator:a47625f247dea35cf276d31c039c6bf0c inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0009247dd98ec58b22040d1c65bb5a54 inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a0009247dd98ec58b22040d1c65bb5a54">Server_session_obj</a> = <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc">Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;</td></tr>
<tr class="memdesc:a0009247dd98ec58b22040d1c65bb5a54 inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Useful short-hand for the concrete <code>Server_session</code> type emitted by <a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a60ec88b23d73c354959a1e11636dc717" title="See Session_server method.">async_accept()</a>.  <a href="classipc_1_1session_1_1Session__server__impl.html#a0009247dd98ec58b22040d1c65bb5a54">More...</a><br /></td></tr>
<tr class="separator:a0009247dd98ec58b22040d1c65bb5a54 inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86de1d5b7cae35d89827c3235e2b8d89 inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a86de1d5b7cae35d89827c3235e2b8d89">Mdt_reader_ptr</a> = typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#a2b1215fb0c9738b9fcfbb337d23c43df">Server_session_obj::Mdt_reader_ptr</a></td></tr>
<tr class="memdesc:a86de1d5b7cae35d89827c3235e2b8d89 inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for Session_mv::Mdt_reader_ptr.  <a href="classipc_1_1session_1_1Session__server__impl.html#a86de1d5b7cae35d89827c3235e2b8d89">More...</a><br /></td></tr>
<tr class="separator:a86de1d5b7cae35d89827c3235e2b8d89 inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ad5c6cbb1c9378d42ec5cd909389dc2 inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a9ad5c6cbb1c9378d42ec5cd909389dc2">Channels</a> = typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#af87da439644b2afd73d6a13d97e7985f">Server_session_obj::Channels</a></td></tr>
<tr class="memdesc:a9ad5c6cbb1c9378d42ec5cd909389dc2 inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for Session_mv::Channels.  <a href="classipc_1_1session_1_1Session__server__impl.html#a9ad5c6cbb1c9378d42ec5cd909389dc2">More...</a><br /></td></tr>
<tr class="separator:a9ad5c6cbb1c9378d42ec5cd909389dc2 inherit pub_types_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ae5b53f9881efc8eccb5f93dc7d820c70"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ae5b53f9881efc8eccb5f93dc7d820c70">init_app_shm_as_needed</a> (const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;app)</td></tr>
<tr class="memdesc:ae5b53f9881efc8eccb5f93dc7d820c70"><td class="mdescLeft">&#160;</td><td class="mdescRight">Analogous to <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__server.html#a406e3860e68d2e863e64215aae43812e" title="Implementation of our per_app_setup_func() customization point used in the ctor impl: invoked from an...">classic::Session_server::init_app_shm_as_needed()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ae5b53f9881efc8eccb5f93dc7d820c70">More...</a><br /></td></tr>
<tr class="separator:ae5b53f9881efc8eccb5f93dc7d820c70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafb28832358d6f75f363b932c291884f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aafb28832358d6f75f363b932c291884f">cleanup</a> ()</td></tr>
<tr class="memdesc:aafb28832358d6f75f363b932c291884f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invoked on <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a37d900117341220d3f5b86b706dca47c" title="Thread used for low-priority periodic low-priority cleanup work. See cleanup().">m_async_cleanup_worker</a>, performs a round of the SHM-pool cleanup algorithm and schedules same.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aafb28832358d6f75f363b932c291884f">More...</a><br /></td></tr>
<tr class="separator:aafb28832358d6f75f363b932c291884f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classipc_1_1session_1_1Session__server__impl"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classipc_1_1session_1_1Session__server__impl')"><img src="closed.png" alt="-"/>&#160;Private Member Functions inherited from <a class="el" href="classipc_1_1session_1_1Session__server__impl.html">ipc::session::Session_server_impl&lt; Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;, Server_session&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:a9bf4d5502b41c98a98fee4cc3c2f2530 inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a9bf4d5502b41c98a98fee4cc3c2f2530">Session_server_impl</a> (flow::log::Logger *logger_ptr, <a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a47625f247dea35cf276d31c039c6bf0c">Session_server_obj</a> *this_session_srv_arg, const <a class="el" href="structipc_1_1session_1_1Server__app.html">Server_app</a> &amp;srv_app_ref, const <a class="el" href="structipc_1_1session_1_1Client__app.html#add718cbf6aa1d2abb26fbadcc974a7bd">Client_app::Master_set</a> &amp;cli_app_master_set_ref, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code, Per_app_setup_func &amp;&amp;per_app_setup_func)</td></tr>
<tr class="memdesc:a9bf4d5502b41c98a98fee4cc3c2f2530 inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">See Session_server ctor; it does that.  <a href="classipc_1_1session_1_1Session__server__impl.html#a9bf4d5502b41c98a98fee4cc3c2f2530">More...</a><br /></td></tr>
<tr class="separator:a9bf4d5502b41c98a98fee4cc3c2f2530 inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4388def520aad700a3fcdfc95b6f24e inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#ae4388def520aad700a3fcdfc95b6f24e">~Session_server_impl</a> ()</td></tr>
<tr class="memdesc:ae4388def520aad700a3fcdfc95b6f24e inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">See Session_server dtor.  <a href="classipc_1_1session_1_1Session__server__impl.html#ae4388def520aad700a3fcdfc95b6f24e">More...</a><br /></td></tr>
<tr class="separator:ae4388def520aad700a3fcdfc95b6f24e inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60ec88b23d73c354959a1e11636dc717 inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a60ec88b23d73c354959a1e11636dc717">async_accept</a> (<a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a0009247dd98ec58b22040d1c65bb5a54">Server_session_obj</a> *target_session, <a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a9ad5c6cbb1c9378d42ec5cd909389dc2">Channels</a> *init_channels_by_srv_req, <a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a86de1d5b7cae35d89827c3235e2b8d89">Mdt_reader_ptr</a> *mdt_from_cli_or_null, <a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a9ad5c6cbb1c9378d42ec5cd909389dc2">Channels</a> *init_channels_by_cli_req, N_init_channels_by_srv_req_func &amp;&amp;n_init_channels_by_srv_req_func, Mdt_load_func &amp;&amp;mdt_load_func, Task_err &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:a60ec88b23d73c354959a1e11636dc717 inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">See Session_server method.  <a href="classipc_1_1session_1_1Session__server__impl.html#a60ec88b23d73c354959a1e11636dc717">More...</a><br /></td></tr>
<tr class="separator:a60ec88b23d73c354959a1e11636dc717 inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a3c0c330d477176b714a9920196775d inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a2a3c0c330d477176b714a9920196775d">to_ostream</a> (std::ostream *os) const</td></tr>
<tr class="memdesc:a2a3c0c330d477176b714a9920196775d inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">See Server_session method.  <a href="classipc_1_1session_1_1Session__server__impl.html#a2a3c0c330d477176b714a9920196775d">More...</a><br /></td></tr>
<tr class="separator:a2a3c0c330d477176b714a9920196775d inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7cd4d77db826af9fe39c17e8ee7ca37 inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a47625f247dea35cf276d31c039c6bf0c">Session_server_obj</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#ad7cd4d77db826af9fe39c17e8ee7ca37">this_session_srv</a> ()</td></tr>
<tr class="memdesc:ad7cd4d77db826af9fe39c17e8ee7ca37 inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns pointer to the object that is <code>private</code>ly sub-classing us.  <a href="classipc_1_1session_1_1Session__server__impl.html#ad7cd4d77db826af9fe39c17e8ee7ca37">More...</a><br /></td></tr>
<tr class="separator:ad7cd4d77db826af9fe39c17e8ee7ca37 inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40fca0b878f9150f5f7db55768da45ad inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a40fca0b878f9150f5f7db55768da45ad">sub_class_set_deinit_func</a> (Task &amp;&amp;task)</td></tr>
<tr class="memdesc:a40fca0b878f9150f5f7db55768da45ad inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility for sub-classes: ensures that <code>task()</code> is invoked near the end of <code>*this</code> dtor's execution, after <em>all</em> other (mutable) state has been destroyed, including stopping/joining any threads performing async <a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a60ec88b23d73c354959a1e11636dc717" title="See Session_server method.">async_accept()</a> ops.  <a href="classipc_1_1session_1_1Session__server__impl.html#a40fca0b878f9150f5f7db55768da45ad">More...</a><br /></td></tr>
<tr class="separator:a40fca0b878f9150f5f7db55768da45ad inherit pub_methods_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a39dc0e5a46a40b15c50d51b4929bac3c"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structipc_1_1session_1_1Server__app.html">Server_app</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a39dc0e5a46a40b15c50d51b4929bac3c">m_srv_app_ref</a></td></tr>
<tr class="memdesc:a39dc0e5a46a40b15c50d51b4929bac3c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a39dc0e5a46a40b15c50d51b4929bac3c" title="Identical to Session_server::m_srv_app_ref. Used in init_app_shm_as_needed() name calc.">Session_server::m_srv_app_ref</a>. Used in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ae5b53f9881efc8eccb5f93dc7d820c70" title="Analogous to classic::Session_server::init_app_shm_as_needed().">init_app_shm_as_needed()</a> name calc.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a39dc0e5a46a40b15c50d51b4929bac3c">More...</a><br /></td></tr>
<tr class="separator:a39dc0e5a46a40b15c50d51b4929bac3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaeb9c251968732f0f44dcde64abdb8bb"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceipc_1_1session.html#a6d07d9996af19e57eb42416e914110ea">Shared_name</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aaeb9c251968732f0f44dcde64abdb8bb">m_srv_namespace</a></td></tr>
<tr class="memdesc:aaeb9c251968732f0f44dcde64abdb8bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical <a class="el" href="classipc_1_1session_1_1Session__base.html#a60a30526bad0c8db6ad05ede618a22bd" title="See srv_namespace().">Session_base::m_srv_namespace</a>. Used in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ae5b53f9881efc8eccb5f93dc7d820c70" title="Analogous to classic::Session_server::init_app_shm_as_needed().">init_app_shm_as_needed()</a> name calc.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aaeb9c251968732f0f44dcde64abdb8bb">More...</a><br /></td></tr>
<tr class="separator:aaeb9c251968732f0f44dcde64abdb8bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acff88daea55dc583980576e06659324b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a6e1d79535dbedc076f11077735e866db">Mutex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#acff88daea55dc583980576e06659324b">m_app_shm_mutex</a></td></tr>
<tr class="memdesc:acff88daea55dc583980576e06659324b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Protects <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a288737a9a8301c166aa83a5f05315c2a" title="The per-app-scope SHM arenas by App::m_name.">m_app_shm_by_name</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#acff88daea55dc583980576e06659324b">More...</a><br /></td></tr>
<tr class="separator:acff88daea55dc583980576e06659324b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea3beac7c650fb100748a1f768e14d5e"><td class="memItemLeft" align="right" valign="top">ipc::shm::arena_lend::Owner_shm_pool_listener_for_repository&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aea3beac7c650fb100748a1f768e14d5e">m_shm_arena_pool_listener</a></td></tr>
<tr class="memdesc:aea3beac7c650fb100748a1f768e14d5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">This guy needs to be around, with each arena (in our case, out of the box, <code>session_shm()</code>s and <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a></code>s) registered against it, for shm::stl::Arena_allocator (and thus STL/allocator-compliant data structures, including containers like our own <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Capnp__message__builder.html#ac2e22abe941240ffa765bff7d288ce1e" title="The outer data structured stored in SHM representing the entire list of capnp-requested segments Segm...">transport::struc::shm::Capnp_message_builder::Segments_in_shm</a>) to work properly with that arena.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aea3beac7c650fb100748a1f768e14d5e">More...</a><br /></td></tr>
<tr class="separator:aea3beac7c650fb100748a1f768e14d5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a288737a9a8301c166aa83a5f05315c2a"><td class="memItemLeft" align="right" valign="top">boost::unordered_map&lt; std::string, std::shared_ptr&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036">Arena</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a288737a9a8301c166aa83a5f05315c2a">m_app_shm_by_name</a></td></tr>
<tr class="memdesc:a288737a9a8301c166aa83a5f05315c2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The per-app-scope SHM arenas by <a class="el" href="structipc_1_1session_1_1App.html#a8e67b57829fe43a122a23c699b5de8fd" title="Brief application name, readable to humans and unique across all other applications&#39; names; used both...">App::m_name</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a288737a9a8301c166aa83a5f05315c2a">More...</a><br /></td></tr>
<tr class="separator:a288737a9a8301c166aa83a5f05315c2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37d900117341220d3f5b86b706dca47c"><td class="memItemLeft" align="right" valign="top">flow::async::Single_thread_task_loop&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a37d900117341220d3f5b86b706dca47c">m_async_cleanup_worker</a></td></tr>
<tr class="memdesc:a37d900117341220d3f5b86b706dca47c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thread used for low-priority periodic low-priority cleanup work. See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aafb28832358d6f75f363b932c291884f" title="Invoked on m_async_cleanup_worker, performs a round of the SHM-pool cleanup algorithm and schedules s...">cleanup()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a37d900117341220d3f5b86b706dca47c">More...</a><br /></td></tr>
<tr class="separator:a37d900117341220d3f5b86b706dca47c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_classipc_1_1session_1_1Session__server__impl"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classipc_1_1session_1_1Session__server__impl')"><img src="closed.png" alt="-"/>&#160;Private Attributes inherited from <a class="el" href="classipc_1_1session_1_1Session__server__impl.html">ipc::session::Session_server_impl&lt; Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;, Server_session&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:a7be0cca184cdba62b9748e0ca37b8b17 inherit pub_attribs_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structipc_1_1session_1_1Server__app.html">Server_app</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a7be0cca184cdba62b9748e0ca37b8b17">m_srv_app_ref</a></td></tr>
<tr class="memdesc:a7be0cca184cdba62b9748e0ca37b8b17 inherit pub_attribs_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">See Session_server public data member.  <a href="classipc_1_1session_1_1Session__server__impl.html#a7be0cca184cdba62b9748e0ca37b8b17">More...</a><br /></td></tr>
<tr class="separator:a7be0cca184cdba62b9748e0ca37b8b17 inherit pub_attribs_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="related" name="related"></a>
Related Functions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p >(Note that these are not member functions.) </p>
</td></tr>
<tr class="memitem:a4556b229bf2bfc3c9eb51af13c47de3d"><td class="memTemplParams" colspan="2">template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </td></tr>
<tr class="memitem:a4556b229bf2bfc3c9eb51af13c47de3d"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4556b229bf2bfc3c9eb51af13c47de3d">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &amp;val)</td></tr>
<tr class="memdesc:a4556b229bf2bfc3c9eb51af13c47de3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a></code> to the given <code>ostream</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4556b229bf2bfc3c9eb51af13c47de3d">More...</a><br /></td></tr>
<tr class="separator:a4556b229bf2bfc3c9eb51af13c47de3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header related_classipc_1_1session_1_1Session__server__impl"><td colspan="2" onclick="javascript:toggleInherit('related_classipc_1_1session_1_1Session__server__impl')"><img src="closed.png" alt="-"/>&#160;Related Functions inherited from <a class="el" href="classipc_1_1session_1_1Session__server__impl.html">ipc::session::Session_server_impl&lt; Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;, Server_session&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:a5fc42e333522f7b1ed11fbff4ae72e5c inherit related_classipc_1_1session_1_1Session__server__impl"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__server__impl.html#a5fc42e333522f7b1ed11fbff4ae72e5c">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1session_1_1Session__server__impl.html">Session_server_impl</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__server.html">Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;, <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc">Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt; &amp;val)</td></tr>
<tr class="memdesc:a5fc42e333522f7b1ed11fbff4ae72e5c inherit related_classipc_1_1session_1_1Session__server__impl"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code>Session_server_impl</code> to the given <code>ostream</code>.  <a href="classipc_1_1session_1_1Session__server__impl.html#a5fc42e333522f7b1ed11fbff4ae72e5c">More...</a><br /></td></tr>
<tr class="separator:a5fc42e333522f7b1ed11fbff4ae72e5c inherit related_classipc_1_1session_1_1Session__server__impl"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload&gt;<br />
class ipc::session::shm::arena_lend::jemalloc::Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;</div><p >This is to vanilla <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a> what <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> is to vanilla <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc" title="A vanilla Server_session with no optional capabilities.">Server_session</a>: it is the session-server type that starts SHM-enabled sessions with SHM-jemalloc provider (ipc::shm::arena_lend::jemalloc). </p>
<p >Its API is identical to that of <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a>, except that it emits <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433" title="Short-hand for the concrete Server_session-like type emitted by async_accept().">Server_session_obj</a> that are <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> and not vanilla <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc" title="A vanilla Server_session with no optional capabilities.">Server_session</a>.</p>
<h3>Implementation</h3>
<p >See similar section of <a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">session::Session_server</a>. It explains why we sub-class <a class="el" href="classipc_1_1session_1_1Session__server__impl.html" title="Internal class template comprising API/logic common to every Session_server variant,...">Session_server_impl</a> and even how how that's used for this SHM-jemalloc scenario. To reiterate:</p>
<p >We use 2 of 2 available customization points of <code>private</code> super-class <a class="el" href="classipc_1_1session_1_1Session__server__impl.html" title="Internal class template comprising API/logic common to every Session_server variant,...">Session_server_impl</a>. We:</p><ul>
<li>pass-up a <code>per_app_setup_func()</code> that, given the new session's desired <a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a>, creates-if-needed the per-app SHM-arena and keeps it open as well as available via <code>this-&gt;app_shm(Client_app::m_name)</code>; and</li>
<li>parameterize <a class="el" href="classipc_1_1session_1_1Session__server__impl.html" title="Internal class template comprising API/logic common to every Session_server variant,...">Session_server_impl</a> on <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> which, during log-in, creates the per-session SHM-arena and keeps it open; saves <code>this-&gt;app_shm(Client_app::m_name)</code>; and partners with <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Client__session__impl.html" title="Core internally-used implementation of shm::arena_lend::jemalloc::Client_session: it is to the latter...">Client_session_impl</a> to set up the lend/borrowing capability between us.</li>
</ul>
<p ><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> doc header delves deeply into the entire impl strategy for setting up these arenas. If you read/grok that, then the present class's impl should be straightforward to follow. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">S_MQ_TYPE_OR_NONE</td><td>See vanilla <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a5cfd3651a06380b877738c6b5fc353a9" title="Constructor: identical to session::Session_server ctor.">Session_server</a>. </td></tr>
    <tr><td class="paramname">S_TRANSMIT_NATIVE_HANDLES</td><td>See vanilla <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a5cfd3651a06380b877738c6b5fc353a9" title="Constructor: identical to session::Session_server ctor.">Session_server</a>. </td></tr>
    <tr><td class="paramname">Mdt_payload</td><td>See vanilla <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a5cfd3651a06380b877738c6b5fc353a9" title="Constructor: identical to session::Session_server ctor.">Session_server</a>. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00070">70</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a1e47c282616158733240d3b7bd808036" name="a1e47c282616158733240d3b7bd808036"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e47c282616158733240d3b7bd808036">&#9670;&nbsp;</a></span>Arena</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Arena =  typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a">Server_session_obj::Base::Arena</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">shm::arena_lend::jemalloc::Session_mv::Arena</a>. See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a> in particular. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00100">100</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a95e9d47a5bd9c32b3d3970ed3af0db01" name="a95e9d47a5bd9c32b3d3970ed3af0db01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95e9d47a5bd9c32b3d3970ed3af0db01">&#9670;&nbsp;</a></span>Channels</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Channels =  typename Impl::Channels</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for <a class="el" href="classipc_1_1session_1_1Session__mv.html#af87da439644b2afd73d6a13d97e7985f" title="Container (vector&lt;&gt;) of Channel_obj.">Session_mv::Channels</a>. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00097">97</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="af2d0f0b214054c9df58b9c44be38de14" name="af2d0f0b214054c9df58b9c44be38de14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af2d0f0b214054c9df58b9c44be38de14">&#9670;&nbsp;</a></span>Impl</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Impl =  <a class="el" href="classipc_1_1session_1_1Session__server__impl.html">Session_server_impl</a> &lt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">Session_server</a>&lt;S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload&gt;, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">Server_session</a>&lt;S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload&gt; &gt;</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Short-hand for our base/core impl. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00079">79</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a435bf78fa2f7ef5da954cb0cc0da69cb" name="a435bf78fa2f7ef5da954cb0cc0da69cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a435bf78fa2f7ef5da954cb0cc0da69cb">&#9670;&nbsp;</a></span>Lock_guard</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Lock_guard =  flow::util::Lock_guard&lt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a6e1d79535dbedc076f11077735e866db">Mutex</a>&gt;</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Short-hand for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a6e1d79535dbedc076f11077735e866db" title="Short-hand for m_app_shm_mutex type.">Mutex</a> lock. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00306">306</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="ae0a96fec25d9deea4000ddf72046f379" name="ae0a96fec25d9deea4000ddf72046f379"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0a96fec25d9deea4000ddf72046f379">&#9670;&nbsp;</a></span>Mdt_builder</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Mdt_builder =  typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#af10f452e602e4ea7389c6a77dd9a0f88">Server_session_obj::Mdt_builder</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Metadata builder type passed to <code>mdt_load_func()</code> in advanced <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">async_accept()</a> overload. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00094">94</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="aa846158c320f2870c77043b6270bb503" name="aa846158c320f2870c77043b6270bb503"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa846158c320f2870c77043b6270bb503">&#9670;&nbsp;</a></span>Mdt_reader_ptr</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Mdt_reader_ptr =  typename Impl::Mdt_reader_ptr</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for <a class="el" href="classipc_1_1session_1_1Session__mv.html#a2b1215fb0c9738b9fcfbb337d23c43df" title="Implements Session API per contract.">Session_mv::Mdt_reader_ptr</a>. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00091">91</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a6e1d79535dbedc076f11077735e866db" name="a6e1d79535dbedc076f11077735e866db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e1d79535dbedc076f11077735e866db">&#9670;&nbsp;</a></span>Mutex</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Mutex =  flow::util::Mutex_non_recursive</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Short-hand for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#acff88daea55dc583980576e06659324b" title="Protects m_app_shm_by_name.">m_app_shm_mutex</a> type. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00303">303</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="ad4d812cdb1a017fb603c16b3a386d433" name="ad4d812cdb1a017fb603c16b3a386d433"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4d812cdb1a017fb603c16b3a386d433">&#9670;&nbsp;</a></span>Server_session_obj</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Server_session_obj =  <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">shm::arena_lend::jemalloc::Server_session</a>&lt;S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for the concrete <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">Server_session</a></code>-like type emitted by <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">async_accept()</a>. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00087">87</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a4d22e6f00d6b8b92fe99198837bce3b9" name="a4d22e6f00d6b8b92fe99198837bce3b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d22e6f00d6b8b92fe99198837bce3b9">&#9670;&nbsp;</a></span>Structured_msg_builder_config</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Structured_msg_builder_config =  typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a7de5ec3e9331c46664a493e060edb6f6">Server_session_obj::Base::Structured_msg_builder_config</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b" title="Implements Session API per contract.">shm::arena_lend::jemalloc::Session_mv::Structured_msg_builder_config</a>. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00103">103</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a0b167219307d2016e46490b82138c553" name="a0b167219307d2016e46490b82138c553"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b167219307d2016e46490b82138c553">&#9670;&nbsp;</a></span>Structured_msg_reader_config</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Structured_msg_reader_config =  typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#a335c3585402cc9430f8c909e8c7e55f4">Server_session_obj::Base::Structured_msg_reader_config</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0" title="Implements Session API per contract.">shm::arena_lend::jemalloc::Session_mv::Structured_msg_reader_config</a>. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00106">106</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a5cfd3651a06380b877738c6b5fc353a9" name="a5cfd3651a06380b877738c6b5fc353a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5cfd3651a06380b877738c6b5fc353a9">&#9670;&nbsp;</a></span>Session_server()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Session_server </td>
          <td>(</td>
          <td class="paramtype">flow::log::Logger *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structipc_1_1session_1_1Server__app.html">Server_app</a> &amp;&#160;</td>
          <td class="paramname"><em>srv_app_ref</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structipc_1_1session_1_1Client__app.html#add718cbf6aa1d2abb26fbadcc974a7bd">Client_app::Master_set</a> &amp;&#160;</td>
          <td class="paramname"><em>cli_app_master_set_ref</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *&#160;</td>
          <td class="paramname"><em>err_code</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Constructor: identical to <a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">session::Session_server</a> ctor. </p>
<p >See its doc header.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>See above. </td></tr>
    <tr><td class="paramname">srv_app_ref</td><td>See above. </td></tr>
    <tr><td class="paramname">cli_app_master_set_ref</td><td>See above. </td></tr>
    <tr><td class="paramname">err_code</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00372">372</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

<p class="reference">References <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00405">ipc::session::shm::arena_lend::jemalloc::Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::init_app_shm_as_needed()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server_a5cfd3651a06380b877738c6b5fc353a9_cgraph.svg" width="972" height="194"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a8d11292ef977d04acb9260036100c605" name="a8d11292ef977d04acb9260036100c605"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d11292ef977d04acb9260036100c605">&#9670;&nbsp;</a></span>app_shm()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036">::Arena</a> * <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::app_shm </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;&#160;</td>
          <td class="paramname"><em>app</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns pointer to the per-<code>app</code> SHM-arena, whose lifetime extends until <code>*this</code> is destroyed; or null if the given <a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> has not yet opened at least 1 <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> via <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">async_accept()</a>. </p>
<p >Alternatively you may use shm::arena_lend::jemalloc::Session_mv::app_shm() off any session object filled-out by <code>*this</code> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">async_accept()</a>, as long as its <a class="el" href="classipc_1_1session_1_1Server__session__mv.html#ac873543383b7a6da94d4353231f34ec2" title="The opposing application is described by a Client_app; this is that description.">Server_session_mv::client_app()</a> equals <code>app</code> (by <a class="el" href="structipc_1_1session_1_1App.html#a8e67b57829fe43a122a23c699b5de8fd" title="Brief application name, readable to humans and unique across all other applications&#39; names; used both...">App::m_name</a> equality).</p>
<p >If non-null is returned, then the same pointer value shall be returned for all subsequent calls with the same (by <a class="el" href="structipc_1_1session_1_1App.html#a8e67b57829fe43a122a23c699b5de8fd" title="Brief application name, readable to humans and unique across all other applications&#39; names; used both...">App::m_name</a> equality) <code>app</code>. The non-null pointers returned for any 2 calls, where <code>app</code> is different (by <a class="el" href="structipc_1_1session_1_1App.html#a8e67b57829fe43a122a23c699b5de8fd" title="Brief application name, readable to humans and unique across all other applications&#39; names; used both...">App::m_name</a> equality) among them, shall always differ.</p>
<p >See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">shm::arena_lend::jemalloc::Session_mv::Arena</a> doc header for useful instructions on working with <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036" title="Short-hand for shm::arena_lend::jemalloc::Session_mv::Arena. See app_shm() in particular.">Arena</a>, <code>lend_object()</code>, and <code>borrow_object()</code>.</p>
<h3>Perf</h3>
<p >Given the choice between Server_session_mv::app_shm() and the present method, the latter is somewhat slower; internally it involves a mutex-protected map lookup, while the former simply returns a cached pointer as of this writing.</p>
<p >Generally it is also quite fast for the user to save any non-null value returned by either <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a></code>; the pointer returned shall always be the same after all.</p>
<h3>Thread safety</h3>
<p >For internal use, namely by <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__impl.html#a6c68c8b048d1297d18a5e75c16a4fb76" title="For use by internal user Session_server: See Server_session_mv counterpart.">shm::arena_lend::jemalloc::Server_session_impl::async_accept_log_in()</a> at least, it is guaranteed the <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a> may be called on the same <code>*this</code> concurrently to itself and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ae5b53f9881efc8eccb5f93dc7d820c70" title="Analogous to classic::Session_server::init_app_shm_as_needed().">init_app_shm_as_needed()</a>. Formally speaking this isn't publicly documented, as I (ygoldfel) didn't want to get users into any bad habit, but internally it does have this property &ndash; as it is required. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">app</td><td><a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> whose segregated SHM-arena to return, if a session for a client of the app has been opened prior to this call. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pointer to <code>*this</code>-held per-<code>app</code> SHM-arena, if it has been created; null otherwise. See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00488">488</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="aa548c3379d4b8a8f0b9d618b0c1da7ba" name="aa548c3379d4b8a8f0b9d618b0c1da7ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa548c3379d4b8a8f0b9d618b0c1da7ba">&#9670;&nbsp;</a></span>app_shm_builder_config()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4d22e6f00d6b8b92fe99198837bce3b9">::Structured_msg_builder_config</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::app_shm_builder_config </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;&#160;</td>
          <td class="paramname"><em>app</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns builder config suitable for capnp-serializing out-messages in SHM arena <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a> for the same <code><a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> app</code>. </p>
<p >Alternatively you may use shm::arena_lend::jemalloc::Session_mv::app_shm_builder_config() off any session object filled-out by <code>*this</code> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">async_accept()</a>, as long as its <a class="el" href="classipc_1_1session_1_1Server__session__mv.html#ac873543383b7a6da94d4353231f34ec2" title="The opposing application is described by a Client_app; this is that description.">Server_session_mv::client_app()</a> equals <code>app</code> (by <a class="el" href="structipc_1_1session_1_1App.html#a8e67b57829fe43a122a23c699b5de8fd" title="Brief application name, readable to humans and unique across all other applications&#39; names; used both...">App::m_name</a> equality).</p>
<p >Unlike <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a> this method does not allow the case where <code>app_shm(app)</code> would have returned null. In that case the present method yields undefined behavior (assertion may trip).</p>
<h3>Perf</h3>
<p >Given the choice between Server_session_mv::app_shm_builder_config() and the present method, the latter is somewhat slower (reason: same as listed in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a> doc header).</p>
<p >Generally it is also quite fast for the user to save any value returned by either <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa548c3379d4b8a8f0b9d618b0c1da7ba" title="Returns builder config suitable for capnp-serializing out-messages in SHM arena app_shm() for the sam...">app_shm_builder_config()</a></code>, as an equal-by-value <code>Config</code> object shall be returned for the same (by <a class="el" href="structipc_1_1session_1_1App.html#a8e67b57829fe43a122a23c699b5de8fd" title="Brief application name, readable to humans and unique across all other applications&#39; names; used both...">App::m_name</a> equality) <code>app</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">app</td><td>See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00512">512</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a1039d8bd2d4461085f3eeb5d24e40799" name="a1039d8bd2d4461085f3eeb5d24e40799"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1039d8bd2d4461085f3eeb5d24e40799">&#9670;&nbsp;</a></span>app_shm_lender_session()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">Structured_msg_builder_config::Builder::Session <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::app_shm_lender_session </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;&#160;</td>
          <td class="paramname"><em>app</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>In short, what <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa548c3379d4b8a8f0b9d618b0c1da7ba" title="Returns builder config suitable for capnp-serializing out-messages in SHM arena app_shm() for the sam...">app_shm_builder_config()</a> is to shm::arena_lend::jemalloc::Session_mv::app_shm_builder_config(), this is to shm::arena_lend::jemalloc::app_shm_lender_session(). </p>
<p >Notes in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa548c3379d4b8a8f0b9d618b0c1da7ba" title="Returns builder config suitable for capnp-serializing out-messages in SHM arena app_shm() for the sam...">app_shm_builder_config()</a> doc header apply here.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">app</td><td>See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

</div>
</div>
<a id="aa56818050f1bd25b26fc51690a6afbf8" name="aa56818050f1bd25b26fc51690a6afbf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa56818050f1bd25b26fc51690a6afbf8">&#9670;&nbsp;</a></span>app_shm_ptr()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">std::shared_ptr&lt; typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036">::Arena</a> &gt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::app_shm_ptr </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;&#160;</td>
          <td class="paramname"><em>app</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Identical to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a> but returns that via a <code>shared_ptr</code>-handle as required for work directly within ipc::shm::arena_lend::jemalloc APIs. </p>
<p >Note this is a quirk of that particular API and, in particular, has no equivalent in <a class="el" href="namespaceipc_1_1session_1_1shm_1_1classic.html" title="Support for SHM-backed ipc::session sessions and session-servers with the SHM-classic (ipc::shm::clas...">ipc::session::shm::classic</a> <code><a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a></code> and <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a></code> counterparts. It should not be necessary to use except when going beyond <a class="el" href="namespaceipc_1_1session.html" title="Flow-IPC module providing the broad lifecycle and shared-resource organization – via the session conc...">ipc::session</a> for your SHM-arena needs.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">app</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00494">494</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

<p class="reference">References <a class="el" href="app_8hpp_source.html#l00144">ipc::session::App::m_name</a>.</p>

</div>
</div>
<a id="a96cce95ab7dccc577815b907c94b8f7e" name="a96cce95ab7dccc577815b907c94b8f7e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96cce95ab7dccc577815b907c94b8f7e">&#9670;&nbsp;</a></span>app_shm_reader_config()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a0b167219307d2016e46490b82138c553">::Structured_msg_reader_config</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::app_shm_reader_config </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;&#160;</td>
          <td class="paramname"><em>app</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns reader config counterpart to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa548c3379d4b8a8f0b9d618b0c1da7ba" title="Returns builder config suitable for capnp-serializing out-messages in SHM arena app_shm() for the sam...">app_shm_builder_config()</a> for a given <code><a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> app</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">app</td><td>See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00522">522</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a76037239acb4b0082023dbe7e7dafb0b" name="a76037239acb4b0082023dbe7e7dafb0b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76037239acb4b0082023dbe7e7dafb0b">&#9670;&nbsp;</a></span>async_accept() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<div class="memtemplate">
template&lt;typename Task_err , typename N_init_channels_by_srv_req_func , typename Mdt_load_func &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::async_accept </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433">Server_session_obj</a> *&#160;</td>
          <td class="paramname"><em>target_session</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a95e9d47a5bd9c32b3d3970ed3af0db01">Channels</a> *&#160;</td>
          <td class="paramname"><em>init_channels_by_srv_req</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aa846158c320f2870c77043b6270bb503">Mdt_reader_ptr</a> *&#160;</td>
          <td class="paramname"><em>mdt_from_cli_or_null</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a95e9d47a5bd9c32b3d3970ed3af0db01">Channels</a> *&#160;</td>
          <td class="paramname"><em>init_channels_by_cli_req</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">N_init_channels_by_srv_req_func &amp;&amp;&#160;</td>
          <td class="paramname"><em>n_init_channels_by_srv_req_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Mdt_load_func &amp;&amp;&#160;</td>
          <td class="paramname"><em>mdt_load_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Task_err &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Contract identical to advanced <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">Session_server::async_accept()</a> overload; but internally ensures that the appropriate SHM-jemalloc arenas are available for use in the emitted <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433" title="Short-hand for the concrete Server_session-like type emitted by async_accept().">Server_session_obj</a>. </p>
<p >See doc header for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">Session_server::async_accept()</a> advanced overload. However additional <code>Error_code</code>s may be emitted on error.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Task_err</td><td>See above. </td></tr>
    <tr><td class="paramname">N_init_channels_by_srv_req_func</td><td>See above. </td></tr>
    <tr><td class="paramname">Mdt_load_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">target_session</td><td>See other <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">async_accept()</a> overload. </td></tr>
    <tr><td class="paramname">init_channels_by_srv_req</td><td>See above. </td></tr>
    <tr><td class="paramname">mdt_from_cli_or_null</td><td>See above. </td></tr>
    <tr><td class="paramname">init_channels_by_cli_req</td><td>See above. </td></tr>
    <tr><td class="paramname">n_init_channels_by_srv_req_func</td><td>See above. </td></tr>
    <tr><td class="paramname">mdt_load_func</td><td>See above. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00549">549</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a4b451906ee2b46d230df5f252bbb64ed" name="a4b451906ee2b46d230df5f252bbb64ed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4b451906ee2b46d230df5f252bbb64ed">&#9670;&nbsp;</a></span>async_accept() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<div class="memtemplate">
template&lt;typename Task_err &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::async_accept </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433">Server_session_obj</a> *&#160;</td>
          <td class="paramname"><em>target_session</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Task_err &amp;&amp;&#160;</td>
          <td class="paramname"><em>on_done_func</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Contract identical to simpler <a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">session::Session_server::async_accept()</a> overload; but internally ensures that the appropriate SHM-jemalloc arenas are available for use in the emitted <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ad4d812cdb1a017fb603c16b3a386d433" title="Short-hand for the concrete Server_session-like type emitted by async_accept().">Server_session_obj</a>. </p>
<p >See doc header for <a class="el" href="classipc_1_1session_1_1Session__server.html#a13887cd64912bb5f5675e2817ff8435f" title="Asynchronously awaits for an opposing Client_session to request session establishment and calls on_do...">session::Session_server::async_accept()</a> simple overload. However additional <code>Error_code</code>s may be emitted on error.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">Task_err</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">target_session</td><td>See above. Reminder (though this is enforced at compile-time): the type of <code>*target_session</code> for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">Session_server::async_accept()</a> is <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc" title="A vanilla Server_session with no optional capabilities.">Server_session</a>; whereas here it is <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a>. </td></tr>
    <tr><td class="paramname">on_done_func</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00532">532</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="aafb28832358d6f75f363b932c291884f" name="aafb28832358d6f75f363b932c291884f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafb28832358d6f75f363b932c291884f">&#9670;&nbsp;</a></span>cleanup()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::cleanup</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Invoked on <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a37d900117341220d3f5b86b706dca47c" title="Thread used for low-priority periodic low-priority cleanup work. See cleanup().">m_async_cleanup_worker</a>, performs a round of the SHM-pool cleanup algorithm and schedules same. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00569">569</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

<p class="reference">References <a class="el" href="ipc__session_2src_2ipc_2session_2detail_2session__shared__name_8cpp_source.html#l00114">ipc::session::decompose_conventional_shared_name()</a>, <a class="el" href="ipc__core_2src_2ipc_2util_2util_8cpp_source.html#l00134">ipc::util::process_running()</a>, <a class="el" href="shared__name_8hpp_source.html#l00312">ipc::util::Shared_name::S_RESOURCE_TYPE_ID_SHM</a>, <a class="el" href="shared__name_8hpp_source.html#l00266">ipc::util::Shared_name::S_SEPARATOR</a>, <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2detail_2shm_2arena__lend_2jemalloc_2session__shared__name_8cpp_source.html#l00034">ipc::session::shm::arena_lend::jemalloc::SHM_SUBTYPE_PREFIX</a>, <a class="el" href="shared__name_8cpp_source.html#l00150">ipc::util::Shared_name::size()</a>, and <a class="el" href="shared__name_8cpp_source.html#l00140">ipc::util::Shared_name::str()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server_aafb28832358d6f75f363b932c291884f_cgraph.svg" width="616" height="219"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ae5b53f9881efc8eccb5f93dc7d820c70" name="ae5b53f9881efc8eccb5f93dc7d820c70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae5b53f9881efc8eccb5f93dc7d820c70">&#9670;&nbsp;</a></span>init_app_shm_as_needed()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::init_app_shm_as_needed </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> &amp;&#160;</td>
          <td class="paramname"><em>app</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Analogous to <a class="el" href="classipc_1_1session_1_1shm_1_1classic_1_1Session__server.html#a406e3860e68d2e863e64215aae43812e" title="Implementation of our per_app_setup_func() customization point used in the ctor impl: invoked from an...">classic::Session_server::init_app_shm_as_needed()</a>. </p>
<p >See that doc header.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">app</td><td>See above. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00405">405</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

<p class="reference">References <a class="el" href="ipc__session_2src_2ipc_2session_2detail_2session__shared__name_8cpp_source.html#l00044">ipc::session::build_conventional_shared_name()</a>, <a class="el" href="shared__name_8hpp_source.html#l00674">ipc::util::Shared_name::ct()</a>, <a class="el" href="app_8hpp_source.html#l00144">ipc::session::App::m_name</a>, <a class="el" href="shared__name_8hpp_source.html#l00312">ipc::util::Shared_name::S_RESOURCE_TYPE_ID_SHM</a>, <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1error.html#a9723fe7e789d5d2d670c42d32238f223a9fcf37ffabb8e0b552276e4bcbe5b0e0">ipc::session::shm::arena_lend::jemalloc::error::S_SHM_ARENA_CREATION_FAILED</a>, <a class="el" href="ipc__core_2src_2ipc_2util_2util_8cpp_source.html#l00037">ipc::util::shared_resource_permissions()</a>, and <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2detail_2shm_2arena__lend_2jemalloc_2session__shared__name_8cpp_source.html#l00034">ipc::session::shm::arena_lend::jemalloc::SHM_SUBTYPE_PREFIX</a>.</p>

<p class="reference">Referenced by <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00372">ipc::session::shm::arena_lend::jemalloc::Session_server&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Session_server()</a>.</p>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server_ae5b53f9881efc8eccb5f93dc7d820c70_cgraph.svg" width="762" height="194"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
<div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server_ae5b53f9881efc8eccb5f93dc7d820c70_icgraph.svg" width="363" height="71"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>

</div>
</div>
<a id="ac2c6ecf04a16b5aba00bdede17aa52e1" name="ac2c6ecf04a16b5aba00bdede17aa52e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2c6ecf04a16b5aba00bdede17aa52e1">&#9670;&nbsp;</a></span>shm_arena_pool_listener()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">ipc::shm::arena_lend::Owner_shm_pool_listener_for_repository * <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::shm_arena_pool_listener</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the arena-pool listener maintained throughout <code>*this</code> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a>'s life. </p>
<p >One must register it with any arena <code>A</code>, if one wants to do <code>A.construct&lt;T&gt;()</code>, where <code>T</code> is an allocator-compliant data structure type with <a class="el" href="classipc_1_1shm_1_1stl_1_1Stateless__allocator.html" title="Stateless allocator usable with STL-compliant containers to store (or merely read) them directly in S...">shm::stl::Stateless_allocator</a>. (<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a> does so automatically for any <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036" title="Short-hand for shm::arena_lend::jemalloc::Session_mv::Arena. See app_shm() in particular.">Arena</a> it maintains out of the box, namely <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">Session_mv::session_shm()</a> and the ones returned by <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a>.) This may be useful if creating your own custom-purpose <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036" title="Short-hand for shm::arena_lend::jemalloc::Session_mv::Arena. See app_shm() in particular.">Arena</a>; instead you can create your own <code>Owner_shm_pool_listener_for_repository</code>, but it is generally encouraged to not do so unnecessarily.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00563">563</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a522c28128981264487a7e35dd9ea3ef8" name="a522c28128981264487a7e35dd9ea3ef8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a522c28128981264487a7e35dd9ea3ef8">&#9670;&nbsp;</a></span>to_ostream()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::to_ostream </td>
          <td>(</td>
          <td class="paramtype">std::ostream *&#160;</td>
          <td class="paramname"><em>os</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Prints string representation to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00717">717</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="a4556b229bf2bfc3c9eb51af13c47de3d" name="a4556b229bf2bfc3c9eb51af13c47de3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4556b229bf2bfc3c9eb51af13c47de3d">&#9670;&nbsp;</a></span>operator&lt;&lt;()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Prints string representation of the given <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a></code> to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00723">723</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a288737a9a8301c166aa83a5f05315c2a" name="a288737a9a8301c166aa83a5f05315c2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a288737a9a8301c166aa83a5f05315c2a">&#9670;&nbsp;</a></span>m_app_shm_by_name</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">boost::unordered_map&lt;std::string, std::shared_ptr&lt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a1e47c282616158733240d3b7bd808036">Arena</a>&gt; &gt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::m_app_shm_by_name</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>The per-app-scope SHM arenas by <a class="el" href="structipc_1_1session_1_1App.html#a8e67b57829fe43a122a23c699b5de8fd" title="Brief application name, readable to humans and unique across all other applications&#39; names; used both...">App::m_name</a>. </p>
<p >If it's not in the map, it has not been needed yet. If it is but is null, it has but error caused it to not be set-up successfully. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00354">354</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="acff88daea55dc583980576e06659324b" name="acff88daea55dc583980576e06659324b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acff88daea55dc583980576e06659324b">&#9670;&nbsp;</a></span>m_app_shm_mutex</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a6e1d79535dbedc076f11077735e866db">Mutex</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::m_app_shm_mutex</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">mutable</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Protects <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a288737a9a8301c166aa83a5f05315c2a" title="The per-app-scope SHM arenas by App::m_name.">m_app_shm_by_name</a>. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00331">331</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a37d900117341220d3f5b86b706dca47c" name="a37d900117341220d3f5b86b706dca47c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37d900117341220d3f5b86b706dca47c">&#9670;&nbsp;</a></span>m_async_cleanup_worker</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">flow::async::Single_thread_task_loop <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::m_async_cleanup_worker</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Thread used for low-priority periodic low-priority cleanup work. See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#aafb28832358d6f75f363b932c291884f" title="Invoked on m_async_cleanup_worker, performs a round of the SHM-pool cleanup algorithm and schedules s...">cleanup()</a>. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00357">357</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="aea3beac7c650fb100748a1f768e14d5e" name="aea3beac7c650fb100748a1f768e14d5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea3beac7c650fb100748a1f768e14d5e">&#9670;&nbsp;</a></span>m_shm_arena_pool_listener</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ipc::shm::arena_lend::Owner_shm_pool_listener_for_repository <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::m_shm_arena_pool_listener</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This guy needs to be around, with each arena (in our case, out of the box, <code>session_shm()</code>s and <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">app_shm()</a></code>s) registered against it, for shm::stl::Arena_allocator (and thus STL/allocator-compliant data structures, including containers like our own <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Capnp__message__builder.html#ac2e22abe941240ffa765bff7d288ce1e" title="The outer data structured stored in SHM representing the entire list of capnp-requested segments Segm...">transport::struc::shm::Capnp_message_builder::Segments_in_shm</a>) to work properly with that arena. </p>
<p >Details:</p><ul>
<li>It is recommended there are not tons of these lying around, but in a production application there should be one <a class="el" href="classipc_1_1session_1_1Session__server.html" title="To be instantiated typically once in a given process, an object of this type asynchronously listens f...">session::Session_server</a> around at a time at most. So keeping this here makes sense. Note we didn't, say, put one in each <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__impl.html" title="Core internally-used implementation of shm::arena_lend::jemalloc::Server_session: it is to the latter...">Server_session_impl</a>.</li>
<li>It is <em>not</em> a problem if there is more than one per process; so if there are more sessions around in the process, it won't cause any problem. It's not a singleton situation.</li>
</ul>
<p >There is also one in each <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Client__session__impl.html" title="Core internally-used implementation of shm::arena_lend::jemalloc::Client_session: it is to the latter...">Client_session_impl</a>. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00348">348</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="a39dc0e5a46a40b15c50d51b4929bac3c" name="a39dc0e5a46a40b15c50d51b4929bac3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39dc0e5a46a40b15c50d51b4929bac3c">&#9670;&nbsp;</a></span>m_srv_app_ref</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structipc_1_1session_1_1Server__app.html">Server_app</a>&amp; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::m_srv_app_ref</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Identical to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a39dc0e5a46a40b15c50d51b4929bac3c" title="Identical to Session_server::m_srv_app_ref. Used in init_app_shm_as_needed() name calc.">Session_server::m_srv_app_ref</a>. Used in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ae5b53f9881efc8eccb5f93dc7d820c70" title="Analogous to classic::Session_server::init_app_shm_as_needed().">init_app_shm_as_needed()</a> name calc. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00325">325</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<a id="aaeb9c251968732f0f44dcde64abdb8bb" name="aaeb9c251968732f0f44dcde64abdb8bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaeb9c251968732f0f44dcde64abdb8bb">&#9670;&nbsp;</a></span>m_srv_namespace</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="namespaceipc_1_1session.html#a6d07d9996af19e57eb42416e914110ea">Shared_name</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html">ipc::session::shm::arena_lend::jemalloc::Session_server</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::m_srv_namespace</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Identical <a class="el" href="classipc_1_1session_1_1Session__base.html#a60a30526bad0c8db6ad05ede618a22bd" title="See srv_namespace().">Session_base::m_srv_namespace</a>. Used in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#ae5b53f9881efc8eccb5f93dc7d820c70" title="Analogous to classic::Session_server::init_app_shm_as_needed().">init_app_shm_as_needed()</a> name calc. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html#l00328">328</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>session/shm/arena_lend/jemalloc/<a class="el" href="session_2shm_2arena__lend_2jemalloc_2jemalloc__fwd_8hpp_source.html">jemalloc_fwd.hpp</a></li>
<li>session/shm/arena_lend/jemalloc/<a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2session__server_8hpp_source.html">session_server.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 11 2025 20:02:26 for Flow-IPC by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>
